// pages/teacher/index/index.js
const app = getApp();

Page({
  data: {
    userInfo: {},
    currentDate: '',
    weather: null,
    stats: {
      courseCount: 0,
      attendanceRate: 0,
      pendingLeaves: 0,
      unreadMessages: 0,
      gradeProgress: 0,
      todoCount: 0
    },
    todayCourses: [],
    notices: [],
    todoList: []
  },

  onLoad: function() {
    // 设置当前日期
    this.setCurrentDate();
    
    // 获取用户信息
    this.setData({
      userInfo: app.globalData.userInfo || {}
    });
    
    // 获取各项数据 - 调整顺序，确保getTodoList在最后调用
    this.getStats();
    this.getNotices();
    this.getTodayCourses();
    this.getWeatherInfo();
    
    // 最后获取待办事项，确保不会被其他方法覆盖
    setTimeout(() => {
      this.getTodoList();
    }, 300);
  },

  onShow: function() {
    // 页面显示时刷新数据 - 同样调整顺序
    this.getStats();
    this.getTodayCourses(); // 刷新课程状态
    
    // 最后获取待办事项
    setTimeout(() => {
      this.getTodoList();
    }, 300);
  },
  
  // 设置当前日期
  setCurrentDate: function() {
    const now = new Date();
    const year = now.getFullYear();
    const month = now.getMonth() + 1;
    const day = now.getDate();
    const weekdays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
    const weekday = weekdays[now.getDay()];
    
    this.setData({
      currentDate: `${year}年${month}月${day}日 ${weekday}`
    });
  },
  
  // 获取天气信息
  getWeatherInfo: function() {
    wx.request({
      url: 'https://api.seniverse.com/v3/weather/now.json',
      method: 'GET',
      data: {
        key: 'SIij8E6v5NGGp0nYK',
        location: 'fujianfuzhou',
        language: 'zh-Hans',
        unit: 'c'
      },
      success: (res) => {
        if (res.data && res.data.results && res.data.results[0]) {
          const weatherData = res.data.results[0];
          this.setData({
            weather: {
              city: weatherData.location.name,
              temperature: weatherData.now.temperature,
              weather: weatherData.now.text
            }
          });
        }
      },
      fail: (err) => {
        console.error('获取天气信息失败：', err);
        // 模拟数据
        this.setData({
          weather: {
            city: '北京市',
            temperature: 18,
            weather: '晴'
          }
        });
      }
    });
  },
  
  // 获取统计数据
  getStats: function() {
    wx.request({
      url: `${app.globalData.serverUrl}/api/teacher/stats`,
      method: 'GET',
      header: {
        'Authorization': `Bearer ${wx.getStorageSync('token')}`
      },
      success: (res) => {
        if (res.statusCode === 200) {
          let statsData = {};
          if (res.data && res.data.data) {
            statsData = res.data.data;
          } else if (res.data && !res.data.success) {
            statsData = res.data;
          }
          
          // 保存当前的todoCount值
          const currentTodoCount = this.data.stats.todoCount;
          
          // 确保所有必要字段都有默认值
          const defaultStats = {
            courseCount: 0,
            attendanceRate: 0,
            pendingLeaves: 0,
            unreadMessages: 0,
            gradeProgress: 0,
            todoCount: currentTodoCount // 使用当前值作为默认值
          };
          
          // 如果API返回的数据中没有todoCount，则使用当前值
          if (statsData && !statsData.todoCount) {
            statsData.todoCount = currentTodoCount;
          }
          
          this.setData({
            stats: {...defaultStats, ...statsData}
          });
          
          console.log('getStats更新后的stats:', this.data.stats);
        } else {
          console.error('获取统计数据失败:', res.data?.message || '未知错误');
        }
      },
      fail: (err) => {
        console.error('获取统计数据请求失败:', err);
      }
    });
  },
  
  // 获取通知
  getNotices: function() {
    const app = getApp();
    const serverUrl = app.globalData.serverUrl || 'http://localhost:3000';
    
    wx.request({
      url: `${serverUrl}/api/notices`, 
      method: 'GET',
      data: {
        role: 'teacher' // 添加角色参数，筛选教师相关通知
      },
      header: {
        'Authorization': `Bearer ${wx.getStorageSync('token')}`
      },
      success: (res) => {
        if (res.statusCode === 200) {
          // 处理返回的数据格式
          let noticesData = [];
          
          // 检查返回的数据结构
          if (res.data && res.data.notices) {
            // 如果返回的是 {role: "teacher", notices: [...]} 格式
            noticesData = res.data.notices;
          } else if (Array.isArray(res.data)) {
            // 如果直接返回通知数组
            noticesData = res.data;
          } else if (res.data && res.data.data && Array.isArray(res.data.data)) {
            // 如果返回的是 {success: true, data: [...]} 格式
            noticesData = res.data.data;
          }
          
          this.setData({
            notices: noticesData
          });
        } else {
          console.error('获取通知失败:', res.data?.message || '未知错误');
          this.setData({
            notices: []
          });
        }
      },
      fail: (err) => {
        console.error('获取通知请求失败:', err);
        this.setData({
          notices: []
        });
      }
    });
  },
  
  // 获取今日课程
  getTodayCourses: function() {
    wx.request({
      url: `${app.globalData.serverUrl}/api/courses/today`,
      method: 'GET',
      header: {
        'Authorization': `Bearer ${wx.getStorageSync('token')}`
      },
      success: (res) => {
        if (res.statusCode === 200 && res.data && (res.data.success || Array.isArray(res.data))) {
          // 处理不同格式的返回数据
          let coursesData = [];
          if (res.data.data && Array.isArray(res.data.data)) {
            coursesData = res.data.data;
          } else if (Array.isArray(res.data)) {
            coursesData = res.data;
          }
          
          this.setData({
            todayCourses: coursesData
          });
        } else {
          console.error('获取今日课程失败:', res.data?.message || '未知错误');
          this.setData({
            todayCourses: []
          });
        }
      },
      fail: (err) => {
        console.error('获取今日课程请求失败:', err);
        this.setData({
          todayCourses: []
        });
      }
    });
  },
  
  // // 获取待办事项
  getTodoList: function() {
    const app = getApp();
    const serverUrl = app.globalData.serverUrl || 'http://localhost:3000';
    
    wx.request({
      url: `${serverUrl}/api/teacher/todos`,
      method: 'GET',
      header: {
        'Authorization': `Bearer ${wx.getStorageSync('token')}`
      },
      success: (res) => {
        console.log('待办事项返回数据:', res.data); // 添加日志查看返回数据
        
        if (res.statusCode === 200) {
          // 检查返回数据格式
          let todoData = [];
          if (Array.isArray(res.data)) {
            todoData = res.data;
          } else if (res.data && Array.isArray(res.data.data)) {
            todoData = res.data.data;
          }
          
          console.log('处理后的待办数据:', todoData); // 添加日志查看处理后的数据
          console.log('待办数量:', todoData.length); // 添加日志查看待办数量
          
          // 更新待办事项列表和数量
          this.setData({
            todoList: todoData,
            'stats.todoCount': todoData.length
          }, () => {
            // 在回调中确认数据已更新
            console.log('更新后的stats:', this.data.stats);
          });
        } else {
          console.error('获取待办事项失败:', res.data?.message || '未知错误');
          this.setData({
            todoList: [],
            'stats.todoCount': 0
          });
        }
      },
      fail: (err) => {
        console.error('获取待办事项请求失败:', err);
        this.setData({
          todoList: [],
          'stats.todoCount': 0
        });
      }
    });
  },
  // 查看通知详情
  viewNoticeDetail: function(e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/student/notice/detail/detail?id=${id}`
    });
  },
  
  // 导航到考勤管理
  navigateToAttendance: function() {
    wx.navigateTo({
      url: '/pages/teacher/kaoqin/kaoqin'
    });
  },
  
  // 导航到请假审批
  navigateToLeave: function() {
    wx.navigateTo({
      url: '/pages/teacher/qingjia/chakan'
    });
  },
  
  // 处理待办事项
  handleTodo: function(e) {
    const id = e.currentTarget.dataset.id;
    const type = e.currentTarget.dataset.type;
    
    if (type === 'leave') {
      // 教师只能查看请假信息，不能审批
      wx.navigateTo({
        url: `/pages/teacher/qingjia/chakan?id=${id}`
      });
    } else if (type === 'grade') {
      wx.navigateTo({
        url: `/pages/teacher/chengji/chengji`
      });
    } else {
      wx.navigateTo({
        url: `/pages/xiaoxi/detail/detail?id=${id}`
      });
    }
  },
  
  // 导航到课程管理
  navigateToCourse: function() {
    wx.navigateTo({
      url: '/pages/teacher/kechenbiao/kechenbiao'
    });
  },
  
  // 导航到成绩录入
  navigateToGrade: function() {
    wx.navigateTo({
      url: '/pages/teacher/chengji/chengji'
    });
  },
  
  // 导航到消息通知
  navigateToMessage: function() {
    wx.navigateTo({
      url: '/pages/xiaoxi/xiaoxi'
    });
  },
  
  // 导航到教学资源
  // 直接跳转到webview页面，并传递URL参数
  navigateToResources: function() {
    wx.navigateTo({
      url: '/pages/common/webview/webview?url=' + encodeURIComponent('https://ygu.edu.cn/mobile/'),
      success: function() {
        console.log('成功跳转到webview页面');
      }
    });
  },
  
  // 导航到教学分析
  navigateToAnalysis: function() {
    wx.navigateTo({
      url: '/pages/teacher/analysis/analysis'
    });
  },
  
  // 添加待办事项页面导航
  navigateToTodo: function() {
    wx.navigateTo({
      url: '/pages/teacher/todo/todo'
    });
  },
  
  // 查看课程详情
  viewCourseDetail: function(e) {
    const courseId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/teacher/kecheng/kecheng?id=${courseId}`
    });
  },
  
  // 发起考勤
  startAttendance: function() {
    wx.navigateTo({
      url: '/pages/teacher/kaoqin/faqi/faqi'
    });
  },
  
  // 跳转到请假查看页面
  navigateToLeave: function() {
    wx.navigateTo({
      url: '/pages/teacher/qingjia/qingjia'
    });
  },
  
  // 跳转到消息通知页面
  navigateToMessage: function() {
    wx.navigateTo({
      url: '/pages/teacher/xiaoxi/xiaoxi'
    });
  },

  // 添加跳转到个人中心的方法
  goToProfile: function() {
    wx.navigateTo({
      url: '/pages/teacher/wode/wode'
    });
  },
  
  // 发起定位签到
  startLocationSign: function() {
    wx.navigateTo({
      url: '/pages/teacher/kaoqin/faqi/faqi?type=location'
    });
  },
  
  // 快速发起签到
  startQuickAttendance: function() {
    wx.navigateTo({
      url: '/pages/teacher/kaoqin/faqi/faqi?mode=quick'
    });
  },
  
  // 为特定课程发起考勤
  startAttendanceForCourse: function(e) {
    const courseId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/teacher/kaoqin/faqi/faqi?courseId=${courseId}`
    });
    
    // 阻止事件冒泡
    e.stopPropagation();
  },
  
  // 下拉刷新
  onPullDownRefresh: function() {
    // 刷新所有数据
    this.getStats();
    this.getNotices();
    this.getTodayCourses();
    this.getTodoList();
    
    wx.stopPullDownRefresh();
  },
  
  // 分享
  onShareAppMessage: function() {
    return {
      title: '智慧校园 - 教师端',
      path: '/pages/login/login'
    };
  },
  
  // 发起位置签到 - 这里有重复定义，需要删除其中一个或合并功能
  startLocationSign: function() {
    wx.navigateTo({
      url: '/pages/teacher/kaoqin/dingwei/dingwei'
    });
  },
  onReady: function() {
    // 页面渲染完成后，再次获取待办事项
    setTimeout(() => {
      this.getTodoList();
    }, 500);
  }
});